package com.hzw.saas.api.storage.bo;

import com.hzw.saas.api.storage.enums.FileIntegrityEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 文件信息
 *
 * @author zzl
 * @since 12/24/2020
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel("资源文件")
public class ResourceFileBO extends ResourceBO {

    private static final long serialVersionUID = 1L;

    /**
     * 版本线ID，用于资源版本管理，一个vid对应多个pid
     */
    @ApiModelProperty(value = "版本线ID，用于资源版本管理，一个vid对应多个pid", position = 15)
    protected String vid;

    /**
     * 文件后缀
     */
    @ApiModelProperty(value = "文件后缀", position = 16)
    protected String suffix;

    /**
     * 文件实际类型（通过文件头检测）
     */
    @ApiModelProperty(value = "文件实际类型（通过文件头检测）", position = 16)
    private String type;

    /**
     * 文件长度，单位：byte
     */
    @ApiModelProperty(value = "文件长度(单位：byte)", position = 17)
    protected Long length;

    /**
     * 图片宽度，仅对图片类型文件有效
     */
    @ApiModelProperty(value = "图片宽度，仅对图片类型文件有效", position = 17)
    private Integer width;

    /**
     * 图片高度，仅对图片类型文件有效
     */
    @ApiModelProperty(value = "图片高度，仅对图片类型文件有效", position = 17)
    private Integer height;

    /**
     * 弱校验和，取adler-32
     */
    @ApiModelProperty(value = "弱校验和，取adler-32", position = 18, hidden = true)
    protected Long weakChecksum;

    /**
     * 强校验和，取md5(16进制字符串)
     */
    @ApiModelProperty(value = "强校验和，取md5(16进制字符串)", position = 19)
    protected String strongChecksum;

    /**
     * 文件完整性
     * 200-正常，201-上传中，202-合并中
     *
     * @see FileIntegrityEnum
     */
    @ApiModelProperty(value = "文件完整性, " + FileIntegrityEnum.API_TEXT, position = 20)
    protected Integer integrity;

}
